Store release callback in parsec_object_t#731
Merged
abouteiller merged 1 commit intoICLDisco:masterfrom Feb 21, 2025
Merged
Conversation
abouteiller
reviewed
Feb 12, 2025
By default, objects created through `PARSEC_OBJ_NEW` will be free'd in the callback, objects constructed through `PARSEC_OBJ_CONSTRUCT` will only be destructed. Users/applications can provide their own release callback through `PARSEC_OBJ_RELEASE_CONSTRUCT`. Mempools break the PaRSEC object model. To store the mempool origin, a list item and an offset stored in the mempool that points to the mempool from where the item was allocated. We should consider adding a type `parsec_mempool_item_t` that stores the origin mempool. Then the release callback invoked from `PARSEC_OBJ_RELEASE` can put the object back into the mempool. Yes, this adds 8B to the `parsec_object_t` but in today's world that is negligible and is outweighed by the benefits of having a more flexible object model. Signed-off-by: Joseph Schuchart <joseph.schuchart@stonybrook.edu>
3c2baf2 to
24867d0
Compare
abouteiller
approved these changes
Feb 14, 2025
This was referenced Feb 21, 2025
Contributor
|
Sorry but merging this was a bad idea. This is not a proper object approach, it basically destroy the beauty of the parsec object system for a single 'it works for me case'. |
bosilca
added a commit
to bosilca/parsec
that referenced
this pull request
Feb 24, 2025
Signed-off-by: George Bosilca <gbosilca@nvidia.com>
bosilca
added a commit
to bosilca/parsec
that referenced
this pull request
Feb 24, 2025
Signed-off-by: George Bosilca <gbosilca@nvidia.com>
Contributor
Author
|
Feel free to revert. TTG is on a fork now, I'll make it work there. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
By default, objects created through
PARSEC_OBJ_NEWwill be free'd in the callback, objects constructed throughPARSEC_OBJ_CONSTRUCTwill only be destructed. Users/applications can provide their own release callback throughPARSEC_OBJ_RELEASE_CONSTRUCT.Mempools break the PaRSEC object model. To store the mempool origin, a list item and an offset stored in the mempool that points to the mempool from where the item was allocated. We should consider adding a type
parsec_mempool_item_tthat stores the origin mempool. Then the release callback invoked fromPARSEC_OBJ_RELEASEcan put the object back into the mempool.Yes, this adds 8B to the
parsec_object_tbut in today's world that is negligible and is outweighed by the benefits of having a more flexible object model.Alternative to #726 and #728.